home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 41.zip / BS1 part 41 / Hamandel v1.0.adf / HAMandel.doc < prev    next >
Text File  |  1988-09-17  |  38KB  |  757 lines

  1.            COPYRIGHT 1988 BY DANIEL WOLF - ALL RIGHTS RESERVED
  2.  
  3.                 MegageM
  4.                    Box  1785
  5.              Santa Maria, CA  93456
  6.  
  7.                  805  349 1104
  8.  
  9.                  July 23, 1988
  10.             
  11.              HAMandel Documentation    
  12.  
  13.  
  14. ***** What is HAMandel?
  15.  
  16. HAMandel is a fractal image generating program for all Amiga computers. 
  17. The remarkable features of HAMandel are a result of technology developments
  18. by Daniel Wolf Ph.D. which, for the first time, utilize the HAM graphics 
  19. mode of the Amiga systems to create breathtaking images of Mandelbrot Sets
  20. and Julia Sets in up to 256 colors.  Most Amiga owners have seen or used
  21. one of the many popular public domain programs for generating Mandelbrot
  22. Set images.  Until the advent of HAMandel these images were restricted to
  23. the usual limited number of 16 or 32 Amiga colors.  Those who've had an
  24. interest in fractal art have seen some of the beautiful published work in
  25. Scientific American (August, 1985) and The Beauty of Fractals (by Peitgen
  26. and Richter - Springer Verlag) and hungered for a fractal art program on
  27. the Amiga which can compute these images in hundreds of color shades.
  28.  
  29. HAMandel's release is also timely in that its HAM images can now be used
  30. as 'clip art' with the new generation of HAM paint packages, such as
  31. Digi-Paint and Photon Paint.  By combining the results of your work with
  32. HAMandel and the 'brush-wrapping' feature of Photon Paint you can create
  33. highly artistic renditions of fractal images 'wrapped' around spheres and
  34. other shapes.  
  35.  
  36. The HAMandel images are rendered in a standard HAM (Hold And Modify) graphics
  37. mode on the Amiga using 6 bit-planes.  HAMandel always uses the maximum
  38. graphical resolution of HAM, that is 320x400 pixels (interlaced screen).
  39. HAMandel is a full-featured, multi-tasking, Intuition-based program.  It has
  40. the familiar Amiga user-interaction standard including:
  41.  
  42.     Four pull-down Menus with Keyboard alternatives
  43.         Select Mandelbrot or Julia Sets and HAM shading control
  44.         Save and Load images as IFF files (with coordinates)
  45.         Iterations per point of 15, 31, 63, 127, 255, 511, or 1023
  46.         ZOOM by 2x, 4x, 8x, or 16x - Reset and Default X,Y and ColorCycle
  47.         DRAW, PAUSE and toggle the title bar on/off
  48.     HAM 320x400 Interlace screen for maximum detail up to 256 colors
  49.     Auxiliary window on the WorkBench screen shows the X,Y values and
  50.             current file path name
  51.     ZOOM-IN windows have a 'CANCEL' gadget (marked with a  !) in
  52.         case you change your mind and wish to select a different ZOOM
  53.     Program operation from CLI or WorkBench Icon
  54.     CLI control allows pre-selection of X and Y coordinates as
  55.         well as Width so you can directly 'dive' into interesting
  56.         parts of the Mandelbrot Set or you can begin with the usual
  57.         full Mandelbrot Set 'default' settings.
  58.     WorkBench ICON control automatically loads an image of the full
  59.         Mandelbrot Set at the 'default' settings. 
  60.     Full Amiga Multi-tasking.  The program will exit if a low memory
  61.         condition occurs.  Its designed with error-checking and crash-
  62.         resistance in mind!
  63.     All hand-crafted in 68000 Assembly Language using the techniques
  64.         described in Compute!'s AMIGA MACHINE LANGUAGE PROGRAMMING GUIDE,
  65.         which was also written by Dr. Wolf (with Doug Leavitt, the creator
  66.             of the ASM68010 speedy assembler for the Amiga).
  67.     Intuitive ease of use.  Zooming only requires you 'PAUSE' the drawing
  68.         and move a ZOOM window's drag bar until the window is over the
  69.         area you want to ZOOM.  Then just click the 'close' gadget on
  70.         the ZOOM window and select DRAW on a menu.  
  71.     Coordinates are displayed at all times so you can make records of your
  72.         fractal explorations.  Coordinates saved as text files.
  73.     Julia Sets aren't available on most Amiga Mandelbrot programs.  They
  74.         are very beautiful and you can easily switch back and forth 
  75.         between Mandelbrot and Julia Sets with HAMandel.
  76.     Compatibility with ALL AMIGA SYSTEMS with at least 512K memory.  No
  77.         expansion memory is required, but HAMandel will work just fine
  78.         with expansion memory systems.  It will use expansion memory 
  79.             whenever possible to minimize its impact on limited CHIP memory
  80.         resources.
  81.     FAST.  That means the arithmetic does not use Floating Point routines,
  82.         which can be slow on some Amigas.  The fixed-point arithmetic
  83.         in HAMandel is about twice as fast as floating point with only
  84.         a slight sacrifice of accuracy.  That means nice pictures in
  85.         from 2 minutes to an hour or so instead of overnight waits with
  86.         other programs.  The techniques for fixed-point arithmetic were
  87.            taught to Dr. Wolf by Mark Riley, another fractal art enthusiast,
  88.         who developed them after being introduced to the Mandelbrot
  89.         Set by Dr. Wolf.  Mr. Riley is well known in the Amiga music
  90.         community for his sophisticated SONIX program as well as his
  91.         contributions to AX Magazine.
  92.  
  93.     HAMandel draws the full Mandelbrot Set with 63 iterations per point
  94.         in: (default settings X=-2.25, Y=-1.5, Width=3.0)
  95.     
  96.         105 seconds on Amiga 1000 with Hurricane 68020 14MHz Board
  97.         371 seconds on Amiga 2000 with no accelerator board
  98.  
  99.     With 255 iterations per point, the times are:
  100.  
  101.         273 seconds on Amiga 1000 with Hurricane 68020 14MHz Board
  102.  
  103.         
  104. ***** USING HAMandel
  105.  
  106. You can start HAMandel two ways:
  107.  
  108.     DoubleClick the WorkBench Icon        or
  109.  
  110.     Type HAMandel (return) in a CLI  
  111.  
  112. Whichever way you start, HAMandel always begins using 255 iterations per point
  113. (IPP) for up to 256 colors in the image.  Once the program is running, you
  114. can PAUSE and set IPP differently if you wish.
  115.  
  116.  
  117. ***** WORKBENCH STARTUP
  118.  
  119.     When HAMandel is started from the WorkBench it automatically attempts
  120. to load in an IFF image of the full Mandelbrot Set (X=-2.25, Y=-1.5, 
  121. Width=3.0, 255 IPP - up to 256 colors).  The 'default' image is stored on
  122. the HAMandel disk in the Pics directory.  Its full path name is:
  123.  
  124.     HAMandel:Pics/Pic0
  125.  
  126. If HAMandel finds an image with this file name, it loads it and displays
  127. it on the main HAM screen.  If this image can't be found, HAMandel sets
  128. itself to the default values (X,Y,W, and IPP) noted above and PAUSEs with
  129. a blank screen.  The coordinate values for the initial image are also loaded 
  130. at the same time, from a file named:
  131.  
  132.     HAMandel:Pics/Pic0.XYW
  133.  
  134. If HAMandel successfully loads the Pic0 and Pic0.XYW files when it starts
  135. up, it goes directly into PAUSE mode.  You can then begin your ZOOM-in
  136. explorations of the Mandelbrot Set.  (You may find it interesting to look
  137. at an .XYW file using the CLI 'Type' command.)
  138.  
  139. ***** CLI STARTUP
  140.  
  141.     You can exercise a good deal of control using the CLI.  Here are some
  142. examples:
  143.  
  144. CLI COMMAND             RESULTS
  145.  
  146. HAMandel ?            Shows usage format and example, then quits
  147.  
  148. HAMandel            Same as WB startup (loads Pic0 file and PAUSEs)
  149.  
  150. HAMandel -2.25,-1.5        Uses X,Y (width=3.0, 255 IPP), begins drawing
  151.  
  152. HAMandel -.8633,.2716,.00046    Uses X,Y,W (255 IPP), begins drawing 
  153.            
  154. HAMandel -2.25            Shows usage format and example, then quits
  155.  
  156. HAMandel f Hamandel:pics/pic3   Starts using designated image file and coords.
  157.  
  158. HAMandel F df1:pics/pic2    Starts using designated image file and coords.
  159.  
  160. HAMandel df1:pics/pic1        Shows usage formate and examples, then quits
  161.  
  162.  
  163. When you start HAMandel from the CLI you can simply use the default 
  164. starting picture, or either 2 or 3 parameters which control the X,Y
  165. starting point (lower left corner of the screen) and 'width'.  We always
  166. recommend using all 3 parameters.  If you use only 1, then HAMandel senses
  167. an error (you must give both X and Y values if you want to select a starting
  168. point).  If you use only 2, HAMandel automatically selects 3.0 as the width 
  169. value.  If you use all 3, you have the most control; its like 'pre-zooming'
  170. on a region.  This can be a time-saver if you're doing lots of Mandelbrot
  171. exploring.  In summary, from the CLI you can just type HAMandel to start up
  172. with the usual starting pic loaded from disk or you can type HAMandel plus
  173. some coordinate information to begin drawing at whatever point you wish.
  174.  
  175. Your other alternative is to use the 'f' or 'F' parameter followed by a
  176. space and a file name (remember that a corresponding .XYW file will also
  177. be loaded for the X, Y, and W values).  The 'f' parameters let you start
  178. HAMandel with any image file as the starting point for your zoom and color
  179. explorations.
  180.  
  181. LIMITATION:    Don't try to use more than 4 or 5 digits to specify a
  182.         floating point value.  The software can handle up to 8
  183.         significant digits on input, but you'll get bad results
  184.         if you use a width value less than about .00002 .  That
  185.         value represents a magnification of 75,000 in linear
  186.         dimension or about five billion in the square dimensions.
  187.  
  188. When HAMandel draws with Default Settings the program begins drawing the full 
  189. Set as quickly as possible.  It may take a few seconds before it is obvious
  190. that anything is happening, since the dark colors at the edges of this image
  191. are pretty low contrast to the black background chosen for aesthetic reasons.
  192. During the drawing with Defaults, the full Mandelbrot set is drawn simul-
  193. taneously from the top and bottom of the screen.  All other drawings of the
  194. Mandelbrot and Julia sets take place only from bottom to top.  The special
  195. situation in the Default mode is that the Mandelbrot Set is symmetric at
  196. the center (which is the center of the screen in this case), so HAMandel
  197. is smart enough to recognize that and cut the drawing time in half by drawing
  198. the top and bottom simultaneously.
  199.  
  200.  
  201. ***** DRAW MODE AND PAUSE MODE - TITLE BAR MESSAGES
  202.  
  203.     HAMandel has two main modes of operation.  In DRAW mode, it is busy 
  204. computing and drawing your image.  In PAUSE mode, it is ready for user
  205. interaction with the menus.  
  206.  
  207. DRAW MODE - When in DRAW mode, most of the menus are 'ghosted' so you can't
  208.         use them.  Only PAUSE and NOBAR options can be selected in DRAW
  209.         mode.  DRAW mode also is obviously detectable from the message on
  210.         the title/menu bar.  The DRAW mode 'message' says:
  211.  
  212.     Drawing Mandelbrot - PAUSE to stop    or
  213.  
  214.     Drawing Julia - PAUSE to stop
  215.  
  216. PAUSE MODE - When in PAUSE mode, all of the menus options are available
  217.          (except PAUSE itself, which is 'ghosted').  All the usual
  218.          menu option selection is done during PAUSE mode.  PAUSE mode
  219.          is also obviously detectable from the message on the title/menu
  220.          bar.  The PAUSE mode 'message' says:
  221.  
  222.     HAMandel stopped - DRAW to restart
  223.  
  224.          PAUSE mode is also automatically engaged when the drawing is
  225.              finished (drawing reaches the top of the screen).  When drawing
  226.              is finished, PAUSE mode is engaged and the program presents its
  227.              title 'message' on the menu/title bar:
  228.  
  229.     HAMandel v1.0 ©1988 by Daniel Wolf
  230.  
  231.  
  232. ***** HAMANDEL'S EXTRA WINDOW
  233.  
  234.     In addition to the main HAM screen you immediately see when HAMandel
  235. starts, there is another AUXILIARY WINDOW on the Workbench Screen.  To see
  236. it, pull the HAM screen down in the usual way with the mouse by grabbing its
  237. title bar.  The little window on the Workbench screen shows the coordinates
  238. of the current image and a file name (you can modify this string gadget to
  239. supply file path names of your own for loading and saving images, see below).
  240.  
  241.  
  242. ***** CONTROLLING HAMandel - THE FOUR MENUS
  243.  
  244.     Once HAMandel is under way, you'll be able to interact through the four
  245. pull-down menus.  If HAMandel is in its DRAW mode, the first thing you MUST
  246. do to interact with the menus is to get the drawing to PAUSE.
  247.  
  248. Even while HAMandel is drawing, you can examine the menus:
  249.  
  250.     Press the mouse menu button and bring the mouse pointer up to the title
  251. bar - then you'll see the menus.
  252.  
  253. IMPORTANT  While in DRAW mode, HAMandel checks to see if you make
  254.        a menu selection at the end of each line it is drawing
  255.            (when the drawing process reaches the right hand edge of the
  256.            screen).  If HAMandel is busily involved in DRAW mode, it may
  257.        appear that it doesn't respond to your request for PAUSE mode
  258.        (see immediately below) for a few seconds.  Be patient.  If you
  259.        select PAUSE on the CONTROL MENU (while in DRAW mode) it may
  260.        take a few seconds to respond.  
  261.  
  262. Control of PAUSE mode and DRAW mode is important, so lets look at the last
  263. menu first.
  264.  
  265.  
  266. ***** CONTROL MENU - DRAW, PAUSE, NOBAR (far right on the menu bar)
  267.     
  268.     DRAW (RIGHT AMIGA - D)  You should see a checkmark next to the DRAW
  269. option in the CONTROL menu.  That means HAMandel is in DRAW mode (it should
  270. be obvious).  While HAMandel is drawing, the DRAW menu item is 'ghosted'
  271. (you can't select DRAW while HAMandel is already in that mode).  Note also
  272. that when HAMandel is drawing, the other three menus are all totally ghosted.
  273. You can't do anything with the menus until you get HAMandel to PAUSE!
  274.  
  275.     PAUSE (RIGHT AMIGA - P)  This menu item is not ghosted.  Whenever HAMandel
  276. is drawing, you can select this menu item to get it to PAUSE.  Once you have
  277. HAMandel in the PAUSE mode, then PAUSE will become ghosted and DRAW will become
  278. available.  Its natural.  When drawing you can PAUSE, when paused you can
  279. restart the DRAW mode.  Once you have made HAMandel PAUSE, all the other menus
  280. become un-ghosted so you can control all of the features of HAMandel when you
  281. are in the PAUSE mode.
  282.  
  283. IMPORTANT  Be sure you know how to work with the PAUSE and DRAW items 
  284.        in the CONTROL menu before you go on.
  285.  
  286.     NOBAR (RIGHT AMIGA - N)  This menu item is never ghosted.  If you select
  287. it once, the menu/title bar at the top of the screen will disappear as soon
  288. as possible.  When you select this item again the menu/title bar will reappear
  289. as soon as possible.  You can 'toggle' the menu/title bar using this option
  290. at any time.  If you want to 'pull the screen down' or use the screen's 
  291. front/back gadgets you need to have the menu/title bar showing.  If you just
  292. want to see the maximum fractal image, you can use this option to 'hide' the
  293. bar.
  294.  
  295.  
  296. ***** PROJECT MENU - MANDELBROT, JULIA, SHADE RED, SHADE GRN, SHADE BLU, 
  297.              SAVE, LOAD, QUIT
  298.  
  299.     NOTE - This menu is completely ghosted during DRAW mode.  To use it
  300.     you must select the PAUSE mode.
  301.  
  302.     Once you have learned to switch HAMandel to the PAUSE mode there are a
  303. variety of options on this menu which give you a lot of flexible control of
  304. HAMandel's fractal drawing and HAM coloring shades.
  305.  
  306.     JULIA/FATOU (RIGHT AMIGA - J)  When in the PAUSE mode you can select the
  307. Julia Set and then restart the program by selecting DRAW.  HAMandel will
  308. create the Julia/Fatou Set corresponding to the coordinates of the lower-left
  309. corner of the screen.  Usually J/F Sets are fast to calculate and they are
  310. always symmetric.  They are also quite interesting.  When you are in an
  311. interesting region of the Mandelbrot Set, PAUSE and select JULIA/FATOU and
  312. restart the DRAW mode.  The resulting J/F set usually 'looks like' the same
  313. region in the Mandelbrot Set, but with a beautiful symmetry.  HAMandel always
  314. draws 'full' Julia/Fatou Sets, that is, you can't ZOOM in on the Julia Sets.
  315. There is one Julia/Fatou Set for each possible lower-left hand corner point
  316. in the Mandelbrot Set.  Its as if each point in the Mandelbrot Set has a
  317. complete two dimension picture hidden within that one point, that is the
  318. Julia Set for that point.  If the lower left corner point on a Mandelbrot
  319. picture is 'inside' the Mandelbrot Set (in a large 'black' area) then the
  320. Julia Set will look a certain way.  If the point is 'outside' the Mandelbrot
  321. Set, the Julia Set will look different.  The best points to use for Julia Sets
  322. are those in which you are 'close' to the edge of the Mandelbrot Set.
  323.  
  324. To most effectifely utilize this menu option, first get yourself to a nice area
  325. in the Mandelbrot set, then PAUSE, select JULIA/FATOU and restart DRAW.
  326.  
  327. When the Julia Set is complete you can return to this menu and de-select
  328. this item, then restart DRAW.  HAMandel will re-draw the Mandelbrot Set
  329. exactly where you left off to explore the Julia Set.  There is no change of
  330. coordinates when you switch between Mandelbrot and Julia Sets.  The Julia Sets
  331. let you look at the '3rd and 4th dimensions' of the Mandelbrot Set with a
  332. minimum of fuss or interruption.
  333.  
  334.     SHADE RED (RIGHT AMIGA - R)  Selecting this option during PAUSE mode
  335. will immediately shift the HAM drawing algorithm from its current state
  336. (default is SHADE BLU - see below) to a RED shading mode.  The dominant
  337. colors for this mode are shades of GREEN, with the minor shades in RED.
  338.  
  339.     SHADE GRN (RIGHT AMIGA - G)  Selecting this option during PAUSE mode
  340. will imediately shift the HAM drawing algorithm from its current state to
  341. a GREEN shading mode.  The dominant colors for this mode are shades of BLUE,
  342. with the minor shades in GREEN.
  343.  
  344.     SHADE BLU (RIGHT AMIGA - B)  Selecting this option during PAUSE mode 
  345. will imediately shift the HAM drawing algorithm from its current state to 
  346. a BLUE shading mode.  The dominant colors for this mode are shades of RED and
  347. YELLOW with minor shades in BLUE.  This is the default setting and when
  348. HAMandel begins you can see a checkmark next to this 'active' option.
  349.  
  350.     LOAD (RIGHT AMIGA - L)  Selecting this option during PAUSE mode will
  351. save the current picture according to the file path name shown in the PATH
  352. string gadget of the auxiliary Workbench screen window (see above, HAMandel's
  353. Extra Window)
  354.  
  355.     SAVE (RIGHT AMIGA - S)  Selecting this option during PAUSE mode will
  356. load a previously saved image according to the file path name shown in the
  357. PATH string gadget of the auxiliary Workbench screen window (see above,
  358. HAMandel's Extra Window)
  359.  
  360.     QUIT (RIGHT AMIGA - Q)  Selecting this option during PAUSE mode will
  361. exit the program!
  362.  
  363.     
  364. ***** DEPTH MENU - 15, 31, 63, 127, 255, 511, 1023
  365.  
  366.     NOTE - This menu is completely ghosted during DRAW mode.  To use it
  367.     you must select the PAUSE mode.
  368.     
  369.     This menu controls the number of iterations per point (IPP), which is 
  370. related both to the 'accuracy' and detail of the Mandelbrot Set image as 
  371. well as to the maximum number of colors used in drawing.
  372.  
  373.     15 (RIGHT AMIGA - 4)  During PAUSE mode you can select 15 IPP.  This
  374. can be a timesaver of you just need to quickly draw a portion of an image.
  375. This is not recommended for high quality pictures, but is present as a
  376. convenience only.
  377.  
  378.     31 (RIGHT AMIGA - 5)  During PAUSE mode you can select 31 IPP.  This
  379. can be a timesaver of you just need to quickly draw a portion of an image.
  380. This is not recommended for high quality pictures, but is present as a
  381. convenience only.  It may work just fine for some Julia Set images.
  382.  
  383.     63 (RIGHT AMIGA - 6)  During PAUSE mode you can select 63 IPP.  This
  384. can be a timesaver of you just need to quickly draw a portion of an image.
  385. An IPP of 63 is OK when drawing the full Mandelbrot Set.
  386.  
  387.    127 (RIGHT AMIGA - 7)  During PAUSE mode you can select 127 IPP.  This
  388. is a good setting for many Mandelbrot and Julia images and will give you
  389. up to 128 colors.  RECOMMENDED SETTING FOR MEDIUM ZOOM MANDELBROT SETS AND
  390. MOST JULIA SETS.
  391.  
  392.    255 (RIGHT AMIGA - 8)  During PAUSE mode you can select 255 IPP.  This is
  393. the maximum available for HAMandel and its use gives you the most beautiful
  394. images possible with HAMandel with up to 256 colors.  You should use this
  395. IPP setting whenever you are working with significant magnifications since
  396. there is a curious relationship between the size of a Mandelbrot Set region
  397. and the number of colors you're likely to see.  The smaller the region, the
  398. better off you'll be with this setting.  The drawback is that 255 IPP is the
  399. slowest possible drawing speed.  You'll see that effect if you (foolishly)
  400. include large sections of the 'black' areas (that is, areas that are really
  401. 'inside' the Mandelbrot Set - they are pretty uninteresting since they're
  402. all black).  When you've selected a region for ZOOMing that is near the
  403. 'border' of the Mandelbrot Set, you'll get the best results with this setting.
  404. Using an IPP setting of 255 lets HAMandel really shine; the extra time is
  405. usually worth the wait because the beauty of the finished images can be
  406. breathtaking.  There is a neat relationship between maximum colors and maximum
  407. detail in the picture.  HIGHLY RECOMMENDED FOR THE MOST BEAUTIFUL IMAGES.
  408. This is the default value when HAMandel starts, note the checkmark on the
  409. menu.
  410.  
  411.    511 (RIGHT AMIGA - 9)  During PAUSE mode you can select 511 IPP.  This
  412. is a good setting for many Mandelbrot and will give you up to 256 
  413. colors.  RECOMMENDED SETTING FOR HIGH ZOOM MANDELBROT SETS.
  414.  
  415.   1023 (RIGHT AMIGA - A)  During PAUSE mode you can select 1023 IPP.  This
  416. is a good setting for many Mandelbrot images and will give you up to 256 
  417. colors.  RECOMMENDED SETTING FOR HIGH ZOOM MANDELBROT SETS.
  418.  
  419.  
  420. ***** OPTIONS MENU - ZOOM 2X, 4X, 8X, 16X, COLOROLL, DEFAULT XY, RESET XY
  421.  
  422.     NOTE - This menu is completely ghosted during DRAW mode.  To use it
  423.     you must select the PAUSE mode.  ZOOM is restricted to Mandelbrot Set
  424.     images.  You cannot ZOOM in on Julia Sets (perhaps in a future version of
  425.     HAMandel).
  426.  
  427. The OPTIONS menu gives you control of ZOOMing, color cycling, and 'resetting'
  428. the coordinates (so you don't have to exit the program to re-start drawing
  429. an image from a blank screen).
  430.  
  431.     ZOOM  2X (RIGHT AMIGA - 0)
  432.     ZOOM  4X (RIGHT AMIGA - 1)
  433.     ZOOM  8X (RIGHT AMIGA - 2)
  434.     ZOOM 16X (RIGHT AMIGA - 3)  Zooming is what makes the Mandelbrot set
  435. interesting.  The Mandelbrot Set can be enlarged INDEFINITELY and will
  436. always continue to show interesting detail.  Mathematicians have concluded
  437. that this is one feature which helps make it the most complex mathematical
  438. object known (July 1988).  Zooming with HAMandel is fast and easy.  HAMandel
  439. is limited to magnifications of about 50-75,000 in order to get the math of
  440. the fractal shape evaluation to match the 256 color mode use on the HAM screen.
  441. If you attempt a ZOOM which would result in a Width value too small for the
  442. math to handle, the ZOOM window will quickly close itself.  Try ZOOMing with
  443. one of the smaller ZOOM values.  If none of the ZOOM windows works, its because
  444. no further ZOOM is possible.
  445.  
  446.     Select the ZOOM value you wish while you've got HAMandel in PAUSE mode.
  447. A special ZOOM window will appear on top of the HAM image on the screen.  You
  448. can do this even when the picture is only partly completed.  HAMandel knows
  449. where you are on the screen even if part of the screen is still blank.  Just
  450. move the ZOOM window around on the screen until it covers the area you wish to
  451. enlarge.  Then simply click on the 'close window' gadget of the ZOOM window
  452. and restart the DRAW mode.  HAMandel will automatically calculate the new
  453. coordinate of the lower left corner (wherever you left the lower left corner
  454. of the ZOOM window) and begin drawing your ZOOMed Mandelbrot Image.
  455.  
  456.     The ZOOM windows overlay a HAM screen and can cause a rather strange
  457. appearance with massive streaks of color extending from the ZOOM window's
  458. right edge to the right edge of the screen.  DON'T WORRY.  When you close the
  459. ZOOM window (or click its ! CANCEL gadget) the screen will be restored OK.
  460.  
  461. IMPORTANT - ESCAPING FROM A ZOOM WINDOW WITHOUT CAUSING ANY EFFECTS AT ALL
  462.  
  463.     You may find that you really want a different ZOOM factor after the
  464. ZOOM window is already on the screen.  Or even that you don't want to ZOOM
  465. after all.  You can 'exit' from the ZOOM window by clicking on the ! gadget
  466. instead of the 'close window' gadget.  Then if you restart the DRAW mode,
  467. HAMandel will simply continue where it left off.  If you click on the ! gadget
  468. its as if you never even asked for a ZOOM.  You can immediately select a
  469. different ZOOM.
  470.  
  471. VERY IMPORTANT - ZOOM ONLY WORKS ONCE DURING PAUSE MODE
  472.  
  473.     Once you do select a ZOOM window, position it, and click its 'close window'
  474. gadget you are committed.  You can't select ZOOM again until you restart DRAW
  475. and then PAUSE again.  It would be quite bizarre if this were not true.  At
  476. this time, the menu doesn't 'ghost', but the program internally forbids you
  477. from re-selecting another ZOOM until its reasonable to do so.  Were this not
  478. true, you might be in the position of ZOOMing 'blind'.
  479.  
  480. ALSO IMPORTANT - LIMITED DRAG BAR SIZE ON ZOOM 16X WINDOW
  481.  
  482.     When you select the smaller ZOOM windows (ZOOM 8X or ZOOM 16X) the
  483. window is so small that the whole title of the window, NEWXY, may not
  484. be completely visible.  The ZOOM 16X window is so small that there is only
  485. a very small portion of drag bar available next to the 'close window' gadget.
  486. BE CAREFUL when moving the ZOOM 16X window; be sure to position your mouse
  487. pointer in the drag bar area so you don't hit the 'close window' gadget
  488. inadvertently and freeze in a zoom you don't want.
  489.  
  490.     COLOROLL (RIGHT AMIGA - C)  During PAUSE mode you can request a color
  491. cycling mode.  This can be very beautiful with finished images (its a little
  492. strange with partially completed images to see a large portion of blank screen
  493. cycling its color).  The color cycling is limited to about 10 seconds, after
  494. which the colors are restored to their starting points and you're back where
  495. you started.  If you wish to extend the duration of the coloroll, simply
  496. move the mouse pointer to the far left edge of the screen during the coloroll.
  497. As long as you leave the mouse pointer at the far left edge, the coloroll will
  498. continue.  To get it to stop, just move the mouse pointer away from the left
  499. edge and it will halt in a few seconds.
  500.  
  501.     DEFAULT XY (RIGHT AMIGA - Z)  During PAUSE mode you can select this option
  502. which forces HAMandel to 'start over from the beginning'.  It will force the
  503. program to draw the full Mandelbrot Set from the beginning, just as if you
  504. exited the program and restarted it using HAMandel or from the WorkBench.
  505. This can prevent you from having to exit the program and re-start it if you
  506. get lost somewhere in the complex plane.  If you simply set the name
  507. HAMandel:pics/pic0 in the PATH string gadget of the auxiliary window and then
  508. PAUSE to LOAD, you'll get the same picture.  This menu item is for convenience
  509. and completeness only.
  510.  
  511.     RESET XY (RIGHT AMIGA - Y)  During PAUSE mode you can select this option to
  512. assure that the screen is cleared when you reactivate DRAW.  This is very
  513. useful.  For example, say you PAUSE and change the IPP setting, then restart
  514. DRAW.  Your resulting image will have portions with two different IPP settings.
  515. The same reasoning applies to PAUSEing to change SHADES (RED, GRN, or BLU).
  516. DRAW is pretty smart.  It knows how to continue just where you left off.
  517. If you select this option then DRAW will start the whole screen over with
  518. your new IPP or COLOR setting.
  519.  
  520. IMPORTANT  For best results, after you PAUSE to change IPP (DEPTH MENU) or
  521.            SHADE colors, it is WISE to select RESET XY before you reactivate 
  522.        DRAW.
  523.  
  524. This completes the presentation of HAMandel menu operation.
  525.  
  526.  
  527. MORE ABOUT THE AUXILIARY WINDOW
  528.  
  529.     The small window on the Workbench screen contains 4 string gadgets.
  530. Three of them show the X, Y, and W(idth) numbers in ASCII Decimal.  The
  531. other shows the current File Path Name used for LOAD and SAVE operations.
  532. You can alter the PATH name string gadget to set up LOAD and SAVE for your
  533. own file naming requirements.  Remember the HAMandel disk has Pic0, Pic1,
  534. etc. in its PICS directory so you can use them as starting points for your
  535. Mandelbrot Set explorations, too.  WE RECOMMEND LEAVING THE X, Y, AND W
  536. STRING GADGETS ALONE.  THESE THREE STRING GADGETS MAY BE EXPLOITED IN FUTURE
  537. RELEASES OF HAMandel.
  538.  
  539.  
  540. MORE ABOUT LOADING AND SAVING IMAGES - THE .XYW COORDINATE FILES
  541.  
  542. For each image you LOAD or SAVE, there is a small extra file, called the
  543. .XYW file, which contains the X, Y, and W values for that image.  The
  544. extra .XYW file is a short ASCII text file.  For example, the initial
  545. default image file is HAMandel/Pics/Pic0.  That file has the actual IFF
  546. image file.  There is another file called HAMandel/Pics/Pic0.XYW which has
  547. the X, Y, and W values.  HAMandel always saves the .XYW file during a SAVE
  548. operation and always tries to find the .XYW file during a LOAD operation.
  549. Try doing a SAVE operation (during PAUSE mode) with a file name of your
  550. own choice.  Then examine (using the CLI) the directory in which you saved
  551. the image.  You should find the file name and also an identical one with
  552. the .XYW extension tacked on.  The .XYW file is 34 bytes long.
  553.  
  554. In summary, SAVE and LOAD always work with two files.  First is the actual
  555. IFF image file with its name in the PATH string gadget of the auxiliary window.
  556. Second is the coordinate file which has the same name as the image file, but
  557. with the .XYW extension.  Whenever you do a SAVE, both files are saved.
  558. Whenever you do a LOAD, both files are loaded.
  559.  
  560.   
  561. NOTE - HAM SCREEN LIMITATIONS - MENU OPERATION AND POSSIBLE DAMAGE TO THE IMAGE
  562.  
  563.     When HAMandel is drawing the full Mandelbrot Set (from both top
  564. and bottom of the screen), activation of menus using the mouse and pointer
  565. may cause some damage to the image.  This only occurs when the drawing
  566. process is actually drawing through the area where a menu strip is showing
  567. at the same time.  You can avoid this damage easily; just wait a few seconds
  568. during the drawing until it proceeds part way 'down' the screen past the
  569. bottom edge of the menu strips.  You can always prevent any damage by just
  570. using the Keyboard Alternative commands shown for each menu option.
  571.  
  572.     When you activate menus, they project down the screen in the HAM area
  573. and appear to cause massive streaks.  Don't worry, those streaks only appear
  574. when the menu is actually being used.  They will vanish when you release the
  575. mouse menu button and won't damage your image.
  576.  
  577.     The menu/title bar itself (for reasons not yet well understood) is always
  578. damaging to the very top few lines of the image.  Intuition's way of handling
  579. the title bar on a HAM screen apparently prevents those few lines of the screen
  580. from behaving exactly like the remainder of the screen.  You will note (even
  581. with NOBAR active) that the top few lines of the screen have a different
  582. appearance than the rest of the screen.  MegageM is working to provide a way
  583. of preventing this in a future release of HAMandel.  Dr. Wolf wished to avoid
  584. the need to move to another screen to control the menus.  You only need to
  585. get to the WorkBench screen to change the file PATH name using its string 
  586. gadget in the Auxiliary Window.
  587.  
  588.     The HAM graphics mode on the Amiga has some limitations built-in.  It is
  589. not possible to have arbitrary colors immediately next to one another in
  590. adjacent pixels under most circumstances.  Programmers and HAM paint package
  591. users are aware of this limitation which can sometimes cause streaks of a few
  592. pixels length (horizontal lines).  HAMandel uses special techniques to avoid
  593. these built-in limitations as much as possible.  Each SHADE option (SHADE RED,
  594. SHADE GRN, and SHADE BLU) has its own color palette of 16 colors which have
  595. been very carefully chosen to avoid streaking.  We don't recommend you change
  596. them, but you may be able to improve your pictures and even eliminate a few
  597. streaks (when they do occur) by using a color palette program on your finished
  598. image.  Dr. Wolf has had some success with ANYTIME from DISCOVERY SOFTWARE.
  599. This color palette program lets you alter any of the 16 palette colors while
  600. viewing the results directly on the image.  It won't always give good results
  601. and Dr. Wolf recommends you take care when changing palette colors.  Always
  602. do your palette color changing AFTER the image is complete and you have
  603. saved it to disk.  Then load it into a HAM paint program to modify it to 
  604. your heart's desire.  Another color modifying program is COLOURS on one of
  605. the Fred Fish disks.
  606.  
  607.  
  608. *****    What IS the Mandelbrot Set, Anyway?
  609.  
  610. To really get a handle on the Mandelbrot set, you should first know a few
  611. facts:
  612.  
  613. 1.    Benoit Mandelbrot is a mathematician who works for IBM.  He
  614.     discovered the Mandelbrot Set in 1980.
  615.  
  616. 2.    The Mandelbrot Set exists in a region of the 'complex plane'
  617.     (where distance in the y direction is multiplied by  i  [the
  618.     square root of -1]) centered around the 0,0 point.  The 'whole
  619.     thing' lies between -2.25 and +0.75 on the x (real) axis and 
  620.     between -1.5 and +1.5 on the y (imaginary) axis.  You can draw
  621.     a little x,y coordinate grid and then draw a box using those
  622.     coordinates to get an idea of 'where the Mandelbrot Set lives'.
  623.  
  624. 3.    To make an image of the Mandelbrot Set, you set up a screen layout
  625.     of, say, 320x400 pixels and let the leftmost border pixels correspond
  626.     to x = -2.25 (and rightmost border pixels are set to x = +0.75).
  627.     Then each pixel along a horizontal line on the screen has a certain
  628.     x value.  For the y direction, set the bottommost line of pixels
  629.     to a y value of -1.5 (and topmost line to y = +1.5).  Now each
  630.     horizontal line of pixels on the screen layout has a different y
  631.     value.  Each pixel combination on the screen has a unique x,y
  632.     position on the coordinate grid.
  633.  
  634.     The x value of the 14th pixel from the left is:
  635.  
  636.         -2.25 + 14 * (3/320)
  637.  
  638.     The y value of the 139th pixel from the bottom is:
  639.  
  640.         -1.5 + 139 * (3/400)
  641.  
  642.     If our left and bottom borders moved elsewhere in the coordinate
  643.     grid, these formulas would change accordingly.
  644.  
  645.     In general, the x value of the nth pixel in a row is:
  646.  
  647.         x val. of leftmost border + n * (width of grid/screenwidth)
  648.  
  649.     and the y value of the nth pixel from the bottom is:
  650.  
  651.         y val. of bottommost border + n * (height of grid/screenheight)
  652.  
  653.     Now, we need to make a test for each pixel and give the pixel a
  654.     color depending on the results of the test.  The 'test' tells
  655.     whether that point in the coordinate grid is 'in' the Mandelbrot
  656.     Set.
  657.  
  658.  
  659. The Test
  660.  
  661.     Each pixel has a certain x and y value (x is somewhere between
  662.     -2.25 and +.75, while y is between -1.5 and +1.5) which we must
  663.     use in the test.  In the Mandelbrot Set Test, these numbers are
  664.     treated mathematically as if they were 'complex' numbers.  A
  665.     complex number has a REAL part and an IMAGINARY part.  In our
  666.     test, the x value is the REAL and the y value is the IMAGINARY.
  667.     Now here is the heart of the test:
  668.  
  669.         Take the x,y values of the point and create a new
  670.         x,y combination in the following way:
  671.  
  672.             new x = x^2 - y^2 + x(point) 
  673.     
  674.             new y = 2xy + y(point)
  675.  
  676.         Each time new x and new y are created, they replace
  677.         the pre-existing x and y but NOT the x(point) and y(point)
  678.         which remain as constant for each pixel.
  679.  
  680.         Also find the 'size' of the new combination in the
  681.         following way:
  682.  
  683.             size = new x^2 + new y^2
  684.  
  685.         Now check if size is > 4 (same thing as checking if
  686.         square root of size is > 2).
  687.  
  688.         For those who understand complex numbers, we start
  689.         with z = x + iy and we get new z = z^2 + z(point).
  690.         The size of new z is z^2.
  691.  
  692.     That accomplishes the test.
  693.  
  694.     The test checks to see if, when you change x and y into newx and newy,
  695.     the size of the combination of newx and newy is larger than 4.  If
  696.     it is, then if you then make new new x and new new y the size will
  697.     certainly only grow larger.  What we are looking for is how many
  698.     time we can make a new x and a new y (starting with x and y from the
  699.     coordinate grid points for a pixel on the screen) without letting the
  700.     'size' of the result blast off to infinity.
  701.  
  702.     Every pixel on the screen has a number associated with it.  That
  703.     number says how many times you can do the test before the 'size'
  704.     gets bigger than 4.  From that number we can give the pixel a color.
  705.     Usually a Mandelbrot Set program not only relates the screen's
  706.     grid of pixels into x,y values for the test, but also sets a limit
  707.     on how many times the test will be done before quitting.  A point
  708.     on the coordinate grid is 'in' the Mandelbrot Set if you can do the
  709.     test an infinite number of times.  We, however, are mortal and cannot
  710.     afford to check even a 320x400 array of pixels more than about 1000
  711.     times each to get a picture in some reasonable time.   
  712.  
  713.     HAMandel's grid is 320x400 (128,000 pixels) with a maximum 'limit'
  714.     of 1023 tests per pixel (iterations per point).  If a point 'survives'
  715.     the test up to the 'limit' (depth value) then we simply assume that
  716.     point is 'in' the Mandelbrot Set and assign it a black color.
  717.     Once the cycle of tests and size checking is done up to a 'limit'
  718.     number of times for each pixel, then each pixel should have a color
  719.     related to the number of times it 'survied' the test and the entire
  720.     screen of colored pixels IS the image of the Mandelbrot Set for the
  721.     selected region of the coordinate grid representing the 'complex'
  722.     plane.
  723.  
  724. 4.    For every point in the Mandelbrot Set there is a corresponding 
  725.     Julia Set.  The formula is almost identical, but a single x(point)
  726.     and y(point) are used throught the scan through all pixels.  The
  727.     entire grid is scanned like the Mandelbrot Set, but instead of 
  728.     changing x(point) and y(point) with each new pixels x and y values,
  729.     the x(point) and y(point) are pre-chosen and fixed throughout the
  730.     entire screen of pixels.  That is, for each point in the Mandelbrot
  731.     Set you can set x(point) and y(point) constant and scan through all
  732.     the pixels to arrive at the image of the Julia Set for x(point) and
  733.     y(point) - so long as you scan over a grid from about -3 to 3 (REAL)
  734.     and -3 to 3 (IMAGINARY).
  735.     
  736. 5.    If you wish to read some great books on the Mandlebrot Set and other
  737.     fractals, try:
  738.  
  739.     The Fractal Geometry of Nature        by B. Mandelbrot (Freeman)
  740.     The Beauty of Fractals            by O. Peitgen     (Springer)
  741.     The Science of Fractal Images        by O. Peitgen     (Springer)
  742.  
  743.     The last one has numerous algorithm descriptions in pseudocode for
  744.     ambitious programmers.
  745.  
  746. 6.    Fractal means FRACTionAL Dimension.  Fractals are oddballs of
  747.     geometry.  We think of lines as one-dimensional, planes as two-
  748.     dimensional, and solids as three-dimensional.  Fractals occupy
  749.     the 'spaces' between these whole numbers of dimensions.  A highly
  750.     complicated folded line could begin to look as if it 'fills up'    
  751.     a sheet of paper (a plane).  Then the line sort of is between 1
  752.     and 2 dimensions.  A coastline of an island has the property that
  753.     its length depends on how 'finely' you measure it.  These two kinds
  754.     of lines are fractals.  The first book (above) really goes into
  755.     this definition and how you can estimate the actual fractional
  756.     dimension of a fractal.
  757.